#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll T,n,ans,maxa;
ll a[200222];
ll r[22],b[22],rc,bc,now,tmp;
void get_ans(){//O(n)
    tmp=0;
    for(int i=1;i<rc;++i){
        tmp+=(r[i]==r[i-1])?r[i]:0;
    }
    for(int i=1;i<bc;++i){
        tmp+=(b[i]==b[i-1])?b[i]:0;
    }
    ans=max(ans,tmp);
}
void dfs(){//O(2^n)
    if(now==n){
        get_ans();
        return ;
    }
    ++now;
    r[rc++]=a[now-1];
    dfs();
    --rc;
    b[bc++]=a[now-1];
    dfs();
    --bc;
    --now;
}
ll dp[111][111][111];
ll _dp[200222][11][11];
int main(){
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>T;
    while(T--){
        ans=rc=bc=maxa=0;
        cin>>n;
        for(int i=0;i<n;++i){
            cin>>a[i];
            maxa=max(maxa,a[i]);
        }
        if(n<=20){
            now=0;
            dfs();
            cout<<ans;
        }else{
            if(n<=100){
                memset(dp,-1,sizeof(dp));
                dp[0][a[0]][0]=0;
                dp[0][0][a[0]]=0;
                for(int i=1;i<n;++i){
                    for(int j=0;j<=100;++j){
                        for(int k=0;k<=100;++k){
                            if(dp[i-1][k][j]!=-1)
                                dp[i][a[i]][j]=max(dp[i][a[i]][j],dp[i-1][k][j]+((a[i]==k)?a[i]:0));
                            if(dp[i-1][j][k]!=-1)
                                dp[i][j][a[i]]=max(dp[i][j][a[i]],dp[i-1][j][k]+((a[i]==k)?a[i]:0));
                        }
                    }
                }
                for(int i=0;i<=100;++i){
                    for(int j=0;j<=100;++j){
                        ans=max(ans,dp[n-1][i][j]);
                    }
                }
                cout<<ans;
            }else{
                if(maxa<=10){
                    memset(_dp,-1,sizeof(_dp));
                    _dp[0][a[0]][0]=0;
                    _dp[0][0][a[0]]=0;
                    for(int i=1;i<n;++i){
                        for(int j=0;j<=10;++j){
                            for(int k=0;k<=10;++k){
                                if(_dp[i-1][k][j]!=-1)
                                    _dp[i][a[i]][j]=max(_dp[i][a[i]][j],_dp[i-1][k][j]+((a[i]==k)?a[i]:0));
                                if(_dp[i-1][j][k]!=-1)
                                    _dp[i][j][a[i]]=max(_dp[i][j][a[i]],_dp[i-1][j][k]+((a[i]==k)?a[i]:0));
                            }
                        }
                    }
                    for(int i=0;i<=10;++i){
                        for(int j=0;j<=10;++j){
                            ans=max(ans,_dp[n-1][i][j]);
                        }
                    }
                    cout<<ans;
                }
            }
        }
        cout<<'\n';
    }
    return 0;
}